package com.api.util;
import com.alibaba.fastjson.JSONObject;
import com.api.pojo.DBCheckResult;
import com.api.pojo.DBChecker;
import com.api.util.JDBCUtil;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class DBCheckUtil {

    /**进行数据库数据验证
     * @param
     * @return
     */
    public static String validate(String sqlParam) {
        //将满足json格式的数据字符串转换为数组列表
        List<DBChecker> dbCheckers = JSONObject.parseArray(sqlParam,DBChecker.class);
        List<DBCheckResult> dbCheckResults = new ArrayList<DBCheckResult>();
        for(DBChecker dbChecker:dbCheckers){
            System.out.println(dbChecker);
            try{
                String no =dbChecker.getNo();
                String sql=dbChecker.getSql();
                //拿到sql执行，查询结果,放到保存列明和列值得map
                Map<String,Object> columnLabelAndValuesMap;
                columnLabelAndValuesMap=JDBCUtil.query(sql,null);
                DBCheckResult dbCheckResult = new DBCheckResult();
                dbCheckResult.setNo(no);
                dbCheckResult.setColumnLabelsAndValues(columnLabelAndValuesMap);
                dbCheckResults.add(dbCheckResult);
            }catch (Exception e){
                e.printStackTrace();
            }
        }
        //将list列表转换为json数组格式字符串
        String result =JSONObject.toJSONString(dbCheckResults);
        return result;
    }


    public static void main(String[] args){
        List<DBCheckResult> dbCheckResults = new ArrayList<DBCheckResult>();
        //第一个DBCheckResult
        DBCheckResult dbCheckResult = new DBCheckResult();
        dbCheckResult.setNo("1");
        Map<String,Object> map = new HashMap<String, Object>();
        map.put("leaveamount",10000);
        dbCheckResult.setColumnLabelsAndValues(map);
        //第二个DBCheckResult
        DBCheckResult dbCheckResult2 = new DBCheckResult();
        dbCheckResult2.setNo("2");
        Map<String,Object> map2 = new HashMap<String, Object>();
        map2.put("totalNum",1);
        dbCheckResult2.setColumnLabelsAndValues(map2);
        //添加到集合
        dbCheckResults.add(dbCheckResult);
        dbCheckResults.add(dbCheckResult2);
        System.out.println(JSONObject.toJSONString(dbCheckResults));


    }
}
